package com.hrbxlh.dao;

import java.util.List;
import java.util.Map;

import com.hrbxlh.vo.StuRankVO;
import org.springframework.stereotype.Repository;

/**
* -------------------------------------------------------
* Copyright (c) 2017, 鑫联华信息科技股份有限公司
* All rights reserved.
* FileName：MyCourseDao.java
* Description：我的课程MyCourseDao类,负责查询登录人的课程信息
* History：
* Date           Author               Desc
* 2017.4.5		  xzx                 建立
* -------------------------------------------------------
*/

@Repository
public interface MyCourseDao {

	/**
	 * @description 获取教师的我的课程信息
	 * @param Map<String,Object> paramMap 教师工号
	 * @return List<Map<String, Object>>  课程集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeacherCourse(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 获取学生的我的课程信息
	 * @param Map<String,Object> paramMap 学号
	 * @return List<Map<String, Object>>  课程集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuCourse(Map<String, Object> paramMap) throws Exception;

	/**
	 * 20171101商莹
	 * @description 获取学生的课程及授课教师
	 * @param Map<String,Object> paramMap 学号
	 * @return List<Map<String, Object>>  课程集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuListCourse(Map<String, Object> paramMap) throws Exception;

	/**
	 * 20171101商莹
	 * @description 获取学生的课程及授课教师（不与试卷关联）
	 * @param Map<String,Object> paramMap 学号
	 * @return List<Map<String, Object>>  课程集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuListAllCourse(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 获取教师的课程表信息
	 * @param Map<String,Object> paramMap 工号
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeacherCouseTab(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 获取学生的课程表信息
	 * @param Map<String,Object> paramMap 学号
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuCouseTab(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 获取教师的课程表信息(用于上一周下一周)
	 * @param Map<String,Object> paramMap 工号
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeacherCourseTabSearch(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 获取学生的课程表信息(用于上一周下一周)
	 * @param Map<String,Object> paramMap 学号 
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuCourseTabSearch(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询老师教的哪种类型的课程id集合
	 * @param Map<String,Object> paramMap 学号 
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeaTeachCourseId(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 老师查询本周课程即是选课又是正常课的
	 * @param Map<String,Object> paramMap 学号 
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeacherCouseTabAll(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询上周的课表（老师的）既是教师排课又是选课的课程
	 * @param Map<String,Object> paramMap 学号 
	 * @return List<Map<String, Object>>  课程表集合
	 * @throws Exception
	 */
	List<Map<String, Object>> getTeacherCourseTabSearchAll(Map<String, Object> paramMap) throws Exception;


	/**
	 * @description 查询这个学生这个课这个章节的试验的评价信息
	 * @param Map<String,Object> paramMap 学号 
	 * @return List<Map<String, Object>> 
	 * @throws Exception
	 */
	Map<String, Object> getMyTestAssign(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询这个学生正在学习的课程信息
	 * @param Map<String,Object> paramMap 学号
	 * @return List<Map<String, Object>>
	 * @throws Exception
	 */
	List<Map<String, Object>> getStuStudyCoursesNow(Map<String, Object> paramMap) throws Exception;

	/**
	 *  @description 获取这个学生回答问题总数，提问问题总数，完成作业总数，完成实验总数，
	 *  @param 学号
	 * */
	Map<String, Object> getCountMsgStu(Map<String, Object> paramMap);

	/**
	 * @description 查询这个学生这个课程的老师信息
	 *@param 学号  课程号
	 * */
	Map<String, Object> getMyTeacherNameById (Map<String, Object> paramMap);

	/**
	 * @description 查询这个班级下的学生这个课程的全部总成绩信息排名  如果想查不为0 的结果 resultMark给1  如果想查全部结果 resultMark给0  如果想查某个人的信息，传id就可以了
	 * @param 课程id 班级id   resultMark（0、1）  stuorteaId（可不传）
	 *
	 * */
	List<StuRankVO> getTotalGradeRank(Map<String, Object> paramMap);

	/**
	 * @description 查询这个班级下的学生这个课程的平时成绩信息排名 如果想查某个人的信息，传id就可以了
	 * @param 课程id 班级id    stuorteaId（可不传）
	 *
	 * */
	List<Map<String, Object>> getNormalGradeRank(Map<String, Object> paramMap);

	/**
	 * @description 查询教师一共教过多少班级、一共教过多少人、批改实验报告数、批改作业数、某班级人数
	 * @param 班级id 教师id
	 * */
	Map<String, Object> getTeacherTeacCensus(Map<String, Object> paramMap);

	/**
	 * @description 查询某个课，某个班级下的学生中总分数大于等于60分的人数
	 * @param 班级id  课程id
	 * */
	int getPassDegreeCount(Map<String, Object> paramMap);

	/**
	 * @description 查询某个课，某个班级下的学生中交作业或者实验的学生的数量
	 * @param classId
	 * @param courseId
	 * @param taskType  1作业  2实验
	 * @param endMark  是否结课  0未结课  1已结课
	 * */
	int getSubmitWorkCount(Map<String, Object> paramMap);


}
